diff options
| author | Rafi Zadanly <zadanlyr@gmail.com> | 2023-01-26 17:02:02 +0700 |
|---|---|---|
| committer | Rafi Zadanly <zadanlyr@gmail.com> | 2023-01-26 17:02:02 +0700 |
| commit | 902e5dabbb1ab0612764983c094af398e5f636ee (patch) | |
| tree | b1b33fed082204be057c50053aee15eede6cce25 /src/pages/my/transaction/[id].js | |
| parent | e340f5c4f4c47cde90e7676fcf71b55ef50e7c23 (diff) | |
Invoice and invoice detail
Diffstat (limited to 'src/pages/my/transaction/[id].js')
| -rw-r--r-- | src/pages/my/transaction/[id].js | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/src/pages/my/transaction/[id].js b/src/pages/my/transaction/[id].js new file mode 100644 index 00000000..09bf1ec7 --- /dev/null +++ b/src/pages/my/transaction/[id].js @@ -0,0 +1,89 @@ +import AppBar from "@/components/layouts/AppBar"; +import Layout from "@/components/layouts/Layout"; +import LineDivider from "@/components/elements/LineDivider"; +import WithAuth from "@/components/auth/WithAuth"; +import { useEffect, useState } from "react"; +import apiOdoo from "@/core/utils/apiOdoo"; +import { useRouter } from "next/router"; +import { useAuth } from "@/core/utils/auth"; +import VariantCard from "@/components/variants/VariantCard"; +import currencyFormat from "@/core/utils/currencyFormat"; +import Disclosure from "@/components/elements/Disclosure"; +import DescriptionRow from "@/components/elements/DescriptionRow"; +import { TransactionDetailAddress } from "@/components/transactions/TransactionDetail"; +import { SkeletonList } from "@/components/elements/Skeleton"; + +export default function DetailTransaction() { + const router = useRouter(); + const { id } = router.query; + const [ auth ] = useAuth(); + const [ transaction, setTransaction ] = useState(null); + + useEffect(() => { + if (auth && id) { + const loadTransaction = async () => { + const dataTransaction = await apiOdoo('GET', `/api/v1/partner/${auth?.partner_id}/sale_order/${id}`); + setTransaction(dataTransaction); + } + loadTransaction(); + } + }, [ auth, id ]); + + return ( + <WithAuth> + <Layout className="pb-4"> + <AppBar title="Detail Transaksi" /> + + { transaction ? ( + <> + <div className="p-4 flex flex-col gap-y-4"> + <DescriptionRow label="Status Transaksi"> + <span className="badge-green">Pending Quotation</span> + </DescriptionRow> + <DescriptionRow label="No Transaksi"> + { transaction?.name } + </DescriptionRow> + <DescriptionRow label="Purchase Order"> + { transaction?.purchase_order_name || '-' } + </DescriptionRow> + <DescriptionRow label="Ketentuan Pembayaran"> + { transaction?.payment_term } + </DescriptionRow> + <DescriptionRow label="Nama Sales"> + { transaction?.sales } + </DescriptionRow> + <DescriptionRow label="Waktu Transaksi"> + { transaction?.date_order } + </DescriptionRow> + </div> + + <LineDivider /> + + <Disclosure + label="Detail Produk" + /> + + <div className="mt-2 p-4 pt-0 flex flex-col gap-y-3"> + { transaction?.products?.map((product, index) => ( + <VariantCard + key={index} + data={product} + /> + )) } + <div className="flex justify-between mt-3 font-medium"> + <p>Total Belanja</p> + <p>{ currencyFormat(transaction?.amount_total || 0) }</p> + </div> + </div> + + <TransactionDetailAddress transaction={transaction} /> + </> + ) : ( + <div className="p-4 py-6"> + <SkeletonList number={12} /> + </div> + ) } + </Layout> + </WithAuth> + ); +}
\ No newline at end of file |
